#pragma once

namespace LSH
{
namespace GUI
{

class EventArgs;

class Event
{
public:
    Event(const String& eventName);
    virtual ~Event(void);
public:
    bool subscribe(SlotFunctorBase* slot);
	String getName() const;
	void operator()(EventArgs& args);

protected:
    typedef std::vector<SlotFunctorBase*> SlotContainer;
    typedef SlotContainer::iterator SoltItr;
    SlotContainer _solts;
    String _name;
};

} // GUI
} // LSH
